#include "StdAfx.h"
#include "InputController.h"
#include "GameCommands.h"
#include "InputProcessor.h"

///////////////////////////////////////////////////////////////////////////////

CInputController::CInputController(IGameCommands& commandsDispatcher,
                                   HWND hWnd)
      : m_commandsDispatcher(commandsDispatcher),
      m_controlledPhysicalObject(NULL),
      m_controlledActionObject(NULL),
      m_hWnd(hWnd),
      m_inputProcessor(NULL)
{
}

///////////////////////////////////////////////////////////////////////////////

CInputController::~CInputController(void)
{
}

///////////////////////////////////////////////////////////////////////////////

void CInputController::processInput(float timeElapsed)
{
   UCHAR keyBuffer[256];
   if (!GetKeyboardState(keyBuffer)) return;

   handleApplicationEvent(keyBuffer);
   if (m_inputProcessor != NULL)
   {
      m_inputProcessor->processInput(keyBuffer, timeElapsed);
   }
}

///////////////////////////////////////////////////////////////////////////////

void CInputController::handleApplicationEvent(UCHAR* keyBuffer)
{
   if (IS_PRESSED(keyBuffer, VK_ESCAPE))
   {
      m_commandsDispatcher.closeApp();
   }
}

///////////////////////////////////////////////////////////////////////////////
